/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Util;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 *
 * @author ToanNhan
 */
public class MySqlDataAccessHelper {
    private Connection connection = null;

    /**
     * Lấy connection
     * @return Connection
     */
    public Connection getConnection(){
        return connection;
    }

    /**
     * Mở kết nối tới cơ sở dữ liệu
     */
    public void open(){
        try {
            DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
            String strCon = "jdbc:mysql://localhost:3306/WebsiteBanHang";
            Properties info = new Properties();
            info.setProperty("characterEncoding", "utf8");
            info.setProperty("user", "root");
            this.connection = DriverManager.getConnection(strCon, info);
        } catch (SQLException ex) {
            Logger.getLogger(MySqlDataAccessHelper.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }
    }

    /**
     * Đóng kết nối
     */
    public void close(){
        if (this.connection != null){
            try {
                this.connection.close();
            } catch (SQLException ex) {
                Logger.getLogger(MySqlDataAccessHelper.class.getName()).log(Level.SEVERE, null, ex);
                System.out.println(ex.getMessage());
            }
        }
    }

    /**
     * Rút trích dữ liệu
     * @param strComm : Chuỗi truy vấn
     * @return ResultSet
     */
    public ResultSet executeQuery(String strComm){
        ResultSet rs = null;
        try{
            Statement statement = connection.createStatement();
            rs = statement.executeQuery(strComm);
        }catch(SQLException ex){
            System.out.println(ex.getMessage());
        }
        return rs;
    }

    /**
     * Thực hiện thêm, xóa, cập nhật dữ liệu
     * @param strComm : chuỗi truy vấn của các lệnh Insert, Updatem Delete
     * @return Số lượng dòng được thêm, xóa, cập nhật
     */
    public int executeUpdate(String strComm){
        int num = -1;
        try {
            Statement statement = connection.createStatement();
            num = statement.executeUpdate(strComm);
        } catch (SQLException ex) {
            Logger.getLogger(MySqlDataAccessHelper.class.getName()).log(Level.SEVERE, null, ex);
            System.out.println(ex.getMessage());
        }
        return num;
    }
}
